package com.hsc.mvc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author
 * @date 2025-05-18
 * @Description 切面规则 框架提供
 */
public interface Interceptor {
    /**
     * 目前方法之前执行
     *
     * @param request
     * @param response
     * @param target
     * @return 返回true 表示放行 继续下个拦截器
     */
    boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object target);

    /**
     * 目标方法之后执行
     * 我们使用接口默认是
     * 我们认为不是所有的子类都要实现这个方法 所以提供了一个默认的实现
     * 但是如果子类要实现这个方法 那么必须要实现这个方法 不能直接父类接口的方法 否则直接抛出异常
     * @param request
     * @param response
     * @param target
     */
    default  void postHandle(HttpServletRequest request, HttpServletResponse response, Object target){
        throw new UnsupportedOperationException();
    }
}
